<?php

class NaukaTestController extends Controller
{
	
    public $zmienna_1;
    public $zmienna_2;
    public $zmienna_3;
    /**
     * Cytaty wykorzystywane w ajaxTest 1
     * @var string
     */
    public $quote;
    
    private $quotes = array(
							array('Cytat pierwszy', 'Edward V Berard'),
							array('Cytat drugi', 'HofstLaw'),
							array('Cytat trzeci', 'trzEdward V Berard'),
							array('Cytat czwart', 'czwHofstLaw'),
						);
    
	public function actionIndex()
	{
            $this->zmienna_1='tetowe wywolanie akcji Inex';
		$this->render('index');
	}

        public function actionPostTest()
	{
            $this->zmienna_1='Tekst z kontrolera postText';
		$this->render('postTest');
	}
        
         public function actionfiltrTest()
	{
            $this->zmienna_1='Tekst z kontrolera filtTest';
		$this->render('filtrTest');
	}
	
	/**
	 * Akcja Ajaxowa wykorzystywana w ajaxTest pobieranie randomowo cytatu odppalana ajaxowo
	 * Ajaxowo renderuje partiala
	 */
	function actionGetQuote()
	{
		$part['quote'] = $this->getRandomQuote();
		$this->renderPartial('_quote',$part );
	}
	
      public function actionajaxTest()
	{
		$this->quote = $this->getRandomQuote();
		$this->render('ajaxTest');
	}
	
	public function actionCrudUsun()
	{
		$this->render('crudUsun');
	}
	
	
	/**
	 * AR event-likemethods prezentacja
	 * @author 2011-12-20
	 */
	public function actionPrzedZapisem()
	{
		#przykładowo prezentowana metod beforeSave znajduje sie w modelu 
		$post=new Osoba();
		$post->nazwa='bamboafricaggg';
		$post->save();
		print_r($post->nazwa);

		$this->render('PrzedZapisem');
	}
	
	/**
	 * Crud edycja, usuwanie istniejącego rekordu - przykład wykorzystanie klasy osoba ar 
	 * 2011-12-20  NIEDZIALA !!
	 * @param int $id
	 * @throws CHttpException
	 */
	public function actionUsun()
	{
		
		//$actors = Osoba::model()->findAll();
		$model = Osoba::model()->deleteByPk(5);
		/*
		echo '<ol>';
		foreach($actors as $actor)
		{
				echo '<li>';
				echo $actor->nazwa;
				echo '<ol>';
				
				echo '</li>';
		}
		echo '</ol>';
	*/
		//
		//$model = Osoba::model()->delete();
		CVarDumper::dodaj('Akcja Usuniecie zmiana danych sukces');
		
		/*
		$model->setAttributes($data);
		
		if($model->save())
		{
			CVarDumper::dodaj('Akcja edycja zmiana danych sukces');
		}
		*/
		
		echo 'Akcja usuwanie';
	}
	
	public function actionCrudPobierzKryteria()
	{
		
		$criteria = new CDbCriteria();
		$criteria->order = 'created_on DESC';
		$criteria->limit = 10;
		//$thisszmienna_3 = TblUser::model()->findAll($criteria); //cos nie chce dzialac !!
			$this->zmienna_3='fdsfds';
		$this->render('crudPobierzKryteria');
	}
	
	/**
	 * Formularz po nowemu stworzony za pomoca statycznych elementów
	 * 2011-12-20
	 */
	public function actionFormNowemu()
	{
		$this->render('formNowemu');	
	}
	
	#Metoda wykorzystna w ajaxie w akcji ajaxTest
	private function getRandomQuote()
	{
		return $this->quotes[array_rand($this->quotes, 1)];
	}
	
	/**
         * Standardowo zakomentowane podczas budowy kontrolera
         * Filtrowanie akcji tzn wywolanie pewnych metod przed akcja i(lub) po niej
         * Wykorzystanie np. przed akcja - sprawdzanie dostepu, po akcji - profilowanie
         * Filtry sa osobna klasa a tu tylko je konfiguruje tzn przypisuje do poszczegolnej akcji
         * @return type 
         */
	public function filters()
	{
		// return the filter configuration for this controller, e.g.:
		/*
		return array(
			'inlineFilterName',
			array(
				'class'=>'path.to.FilterClass',
				'propertyName'=>'propertyValue',
			),
		);
		*/
		#MNIE zadzialal tylko filtr pre
		#pierwsza wartosc to klasa filtra alas do niej sciezka dostepu
		#właściwości wlasnosc_klasy_filtru klasy PerformanceFilter b�dzie zainicjowana warto�ci� 'second'.
		#U�ywaj�c operatora plusa oraz minusa, mo�emy okre�li� dla kt�rych akcji filtr powinien a dla kt�rych nie powinien mie� zastosowania.
		return array(
            array(
                'application.filters.PerformanceFilter',
                'wlasnosc_klasy_filtru'=>'second'
            )
        );
		
	}

        
        /**
         * Nie wiem jak narazie po co ta metoda jest
         * @return type 
         */
        /*
	public function actions()
	{
		// return external action classes, e.g.:
		return array(
			'action1'=>'path.to.ActionClass',
			'action2'=>array(
				'class'=>'path.to.AnotherActionClass',
				'propertyName'=>'propertyValue',
			),
		);
	}
	*/
	
	public function actionPaginacjaTest()
	{
            $this->zmienna_1='tetowe wywolanie akcji Inex';
		$this->render('index');
	}
	
	/**
	 * # 2012-01-03  dodatkowe parametry ustawienia yiicb str 250
	 */
	public function actionDebugowanie()
	{
		
		# 3 argument musi sie nazwywac inaczej niz kategrie w main configuracja 
		#jak nazwa projektu ! example jest zdefiniowane w main ustawieniach
		# nie wiem dlaczego tak jest 
		# poza tym nie wyswietla mi bledow a powinien
		
	
		Yii::trace('example trace message','testdrive2');
		Yii::log('info tresc komuniktatow', CLogger::LEVEL_INFO,'testdrive2');
		Yii::log('error  tresc komuniktatow', CLogger::LEVEL_ERROR, 'testdrive2');
		Yii::log('trace  tresc komuniktatow', CLogger::LEVEL_TRACE, 'testdrive2');
		Yii::log('warning  tresc komuniktatow', CLogger::LEVEL_WARNING, 'testdrive2');
		
		Yii::beginProfile('preg_replace', 'testdrive2');
		for($i=0;$i<10000;$i++){
			preg_replace('~^[ a-z]+~', '', 'test it');
		}
		Yii::endProfile('preg_replace', 'testdrive2');
		
		

        //$this->zmienna_1='tetowe wywolanie akcji Inex';
		$this->render('Debugowanie');
	}
}